﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace Elegant.Telas.Controles
{
    class LogImageManager
    {

        private LogImagem logImage;
        private FileManager fm;

        /// <summary>
        /// Construtor da classe, define o idioma do log baseado no idioma atual.
        /// </summary>
        public LogImageManager()
        {
           
            this.logImage = new LogImagem(Thread.CurrentThread.CurrentUICulture.ToString());
           
        }

        /// <summary>
        /// Cria e abre um arquivo de escrita de log
        /// </summary>
        /// <param name="filePath">caminho do arquivo de escrita</param>
        public void createAndOpenLogFile(string filePath){
            
            this.fm = new FileManager();
            fm.createAndOpenWriteFile(filePath);
        }

        /// <summary>
        /// Escreve o log de início de processamento no arquivo de log.
        /// </summary>
        /// <param name="imageName">nome da imagem</param>
        /// <returns>string da mensagem de log escrita no arquivo</returns>
        public string putStartProcessLog(string imageName)
        {
            string message = logImage.getStartProcessingLog(imageName);
            this.fm.writeFile(message);
            return message;
        }

        /// <summary>
        /// Escreve o log de imagem transferida no arquivo de log.
        /// </summary>
        /// <param name="imageName">nome da imagem</param>
        /// <returns>string da mensagem de log escrita no arquivo</returns>
        public string putTransferedImageLog(string imageName)
        {
            string message = logImage.getTranferedImageLog(imageName);
            this.fm.writeFile(message);
            return message;
        }

        /// <summary>
        /// Escreve o log de imagem não transferida no arquivo de log.
        /// </summary>
        /// <param name="imageName"></param>
        /// <returns>string da mensagem de log escrita no arquivo</returns>
        public string putNotTransferedImageLog(string imageName)
        {
            string message = logImage.getNotTransferedImageLog(imageName);
            this.fm.writeFile(message);
            return message;
        }

        /// <summary>
        /// Escreve o log de imagem processada no arquivo de log.
        /// </summary>
        /// <param name="imageName"></param>
        /// <returns>string da mensagem de log escrita no arquivo</returns>
        public string putFinalProcessImageLog(string imageName)
        {
            string message = logImage.getFinalProcessLog(imageName);
            this.fm.writeFile(message);
            return message;
        }

        /// <summary>
        /// Fecha o arquivo de log.
        /// </summary>
        public void endLog()
        {
            this.fm.closeWriteFile();
        }
    }
}
